package com.ruoyi.system.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.system.domain.TbDevice;
import com.ruoyi.system.domain.TbDeviceInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Schema(description = "设备信息")
@Data
public class TbDeviceVO  extends  TbDevice{

    @Schema(description = "设备ID")
    private Long id;

    @Schema(description = "开始时间")
    private Date startTime;

    @Schema(description = "结束时间")
    private Date endTime;

    @Schema(description = "设备序列号")
    private String devSn;

    @Schema(description = "飞机编号")
    private String airplaneCode;

    /**
     * 部件编号
     */
    @Schema(description = "部件编号")
    private String devPartNum;

    /**
     * 注册状态 0   未注册 , 1 已注册
     */
    @Excel(name = "注册状态 0   未注册 , 1 已注册")
    @Schema(description = "注册状态 0   未注册 , 1 已注册")
    private Integer registrationStatus;

    /**
     * 登记状态    0 未登记  1 已登记
     */
    @Excel(name = "登记状态    0 未登记  1 已登记")
    @Schema(description = "登记状态    0 未登记  1 已登记")
    private Integer recordStatus;

    /**
     * 登记时间
     */
    @Schema(description = "登记时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "登记时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date registrationTime;

    // ============ tb_device_info 表字段（类型与表一致）============

    /**
     * 操作系统版本
     */
    @Excel(name = "操作系统版本")
    @Schema(description = "操作系统版本")
    private String osVer;

    /**
     * 存储总容量(GB)
     */
    @Excel(name = "存储总容量(GB)")
    @Schema(description = "存储总容量(GB)")
    private Double romTotal;  // 改为 Double

    /**
     * 可用存储容量(GB)
     */
    @Excel(name = "可用存储容量(GB)")
    @Schema(description = "可用存储容量(GB)")
    private Double romFree;  // 改为 Double

    /**
     * 设备型号
     */
    @Excel(name = "设备型号")
    @Schema(description = "设备型号")
    private String devModel;

    /**
     * CPU信息
     */
    @Excel(name = "CPU信息")
    @Schema(description = "CPU信息")
    private String cpuInfo;

    /**
     * 内存总量(GB)
     */
    @Excel(name = "内存总量(GB)")
    @Schema(description = "内存总量(GB)")
    private Double memoryTotal;  // 改为 Double

    /**
     * 电池健康度(百分比)
     */
    @Excel(name = "电池健康度(百分比)")
    @Schema(description = "电池健康度(百分比)")
    private Double batteryHealth;  // 改为 Double

    /**
     * 硬件版本
     */
    @Excel(name = "硬件版本")
    @Schema(description = "硬件版本")
    private String hardwareVersion;

    /**
     * 累计加电时间
     */
    @Excel(name = "累计加电时间")
    @Schema(description = "累计加电时间")
    private Double powerOnTime;  // 新增字段，与表一致

    /**
     * 累计开机时间(h)
     */
    @Excel(name = "累计开机时间(h)")
    @Schema(description = "累计开机时间(h)")
    private Double powerOnHours;  // 改为 Double

    /**
     * 累计开机次数
     */
    @Excel(name = "累计开机次数")
    @Schema(description = "累计开机次数")
    private Integer powerOnCount;

    /**
     * 可用内存(GB)
     */
    @Excel(name = "可用内存(GB)")
    @Schema(description = "可用内存(GB)")
    private Double memoryFree;  // 改为 Double

    /**
     * 屏幕温度(℃)
     */
    @Excel(name = "屏幕温度(℃)")
    @Schema(description = "屏幕温度(℃)")
    private Double screenTemp;  // 改为 Double

    /**
     * 风扇转速(rpm)
     */
    @Excel(name = "风扇转速(rpm)")
    @Schema(description = "风扇转速(rpm)")
    private Double fanSpeed;  // 改为 Double

    /**
     * 主板温度(℃)
     */
    @Excel(name = "主板温度(℃)")
    @Schema(description = "主板温度(℃)")
    private Double motherboardTemp;  // 改为 Double

    /**
     * 设备连接状态
     */
    @Excel(name = "设备连接状态")
    @Schema(description = "设备连接状态")
    private Integer connectionStatus;

    /**
     * 当前执行任务
     */
    @Excel(name = "当前执行任务")
    @Schema(description = "当前执行任务")
    private Integer currentTask;

    /**
     * 最后升级状态
     */
    @Excel(name = "最后升级状态")
    @Schema(description = "最后升级状态")
    private Integer lastUpgradeStatus;

    /** usb状态 */
    @Excel(name = "usb状态")
    @Schema(description = "usb状态")
    private Integer usbState;

    /** lcm温度 */
    @Excel(name = "lcm温度")
    @Schema(description = "lcm温度")
    private String lcmTemperature;  // 改为 String

    /** pcb温度 */
    @Schema(description = "pcb温度")
    @Excel(name = "pcb温度")
    private String pcbTemperature;  // 改为 String

    /** cpu温度 */
    @Schema(description = "cpu温度")
    @Excel(name = "cpu温度")
    private String cpuTemperature;  // 改为 String

    /** 内存使用率 */
    @Schema(description = "内存使用率")
    @Excel(name = "内存使用率")
    private String memUsage;  // 改为 String

    /** 存储空间使用率 */
    @Schema(description = "存储空间使用率")
    @Excel(name = "存储空间使用率")
    private String storageUsage;  // 改为 String

    /** cpu 使用率 */
    @Schema(description = "cpu 使用率")
    @Excel(name = "cpu 使用率")
    private String cpuUsage;  // 改为 String

    /** 版本ID信息 */
    @Excel(name = "版本ID信息")
    @Schema(description = "版本ID信息")
    private String versionIdInfo;

    /** 实际开机分钟数 */
    @Excel(name = "实际开机分钟数")
    @Schema(description = "实际开机分钟数")
    private Double pwrOnMinReal;  // 改为 Double

    /** 临时开机分钟数 */
    @Excel(name = "临时开机分钟数")
    @Schema(description = "临时开机分钟数")
    private Integer pwrOnMinTemp;


    /**
     * 设备数量（动态计算）
     */
    @Excel(name = "设备数量")
    @Schema(description = "设备数量")
    private Integer deviceCount;


}
